import request from '../utils/request.jsx';

/**
 * 获取API列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页条数
 * @param {string} params.name - API名称（模糊查询）
 * @param {string} params.method - 请求方法
 * @param {string} params.status - 状态
 * @returns {Promise}
 */
export async function getApiList(params) {
  try {
    return await request.get('/api/list', { params });
  } catch (error) {
    console.error('获取API列表失败:', error);
    throw error;
  }
}

/**
 * 获取API详情
 * @param {string} id - API ID
 * @returns {Promise}
 */
export async function getApiDetail(id) {
  try {
    return await request.get(`/api/detail/${id}`);
  } catch (error) {
    console.error('获取API详情失败:', error);
    throw error;
  }
}

/**
 * 创建API
 * @param {Object} data - API信息
 * @returns {Promise}
 */
export async function createApi(data) {
  try {
    return await request.post('/api/create', data);
  } catch (error) {
    console.error('创建API失败:', error);
    throw error;
  }
}

/**
 * 更新API
 * @param {string} id - API ID
 * @param {Object} data - 更新的API信息
 * @returns {Promise}
 */
export async function updateApi(id, data) {
  try {
    return await request.put(`/api/update/${id}`, data);
  } catch (error) {
    console.error('更新API失败:', error);
    throw error;
  }
}

/**
 * 删除API
 * @param {string} id - API ID
 * @returns {Promise}
 */
export async function deleteApi(id) {
  try {
    return await request.delete(`/api/delete/${id}`);
  } catch (error) {
    console.error('删除API失败:', error);
    throw error;
  }
}

/**
 * 批量删除API
 * @param {Array} ids - API ID数组
 * @returns {Promise}
 */
export async function batchDeleteApi(ids) {
  try {
    return await request.post('/api/batchDelete', { ids });
  } catch (error) {
    console.error('批量删除API失败:', error);
    throw error;
  }
}

/**
 * 发布API
 * @param {string} id - API ID
 * @returns {Promise}
 */
export async function publishApi(id) {
  try {
    return await request.post(`/api/publish/${id}`);
  } catch (error) {
    console.error('发布API失败:', error);
    throw error;
  }
}

/**
 * 下线API
 * @param {string} id - API ID
 * @returns {Promise}
 */
export async function offlineApi(id) {
  try {
    return await request.post(`/api/offline/${id}`);
  } catch (error) {
    console.error('下线API失败:', error);
    throw error;
  }
}

/**
 * 测试API
 * @param {string} id - API ID
 * @param {Object} data - 测试数据
 * @returns {Promise}
 */
export async function testApi(id, data) {
  try {
    return await request.post(`/api/test/${id}`, data);
  } catch (error) {
    console.error('测试API失败:', error);
    throw error;
  }
}

/**
 * 获取API统计数据
 * @returns {Promise}
 */
export async function getApiStatistics() {
  try {
    return await request.get('/api/statistics');
  } catch (error) {
    console.error('获取API统计数据失败:', error);
    throw error;
  }
}

/**
 * 获取API监控数据
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export async function getApiMonitorData(params) {
  try {
    return await request.get('/api/monitor/data', { params });
  } catch (error) {
    console.error('获取API监控数据失败:', error);
    throw error;
  }
}

/**
 * 获取API性能数据
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export async function getApiPerformance(params) {
  try {
    return await request.get('/api/performance', { params });
  } catch (error) {
    console.error('获取API性能数据失败:', error);
    throw error;
  }
}

/**
 * 导出监控数据
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export async function exportMonitorData(params) {
  try {
    return await request.get('/api/monitor/export', { params });
  } catch (error) {
    console.error('导出监控数据失败:', error);
    throw error;
  }
}